# To change this template, choose Tools | Templates
# and open the template in the editor.

__author__ = "Ronald"
__date__ = "$06-06-2010 08:06:00 PM$"

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
from OpenGL.raw.GL import glPopMatrix
from numpy import *
# from OpenGL.GL import glScale

TRUCKLENGTH = 2

class Engine(object):

    def __init__(self, size, position):
        self.size = size
        self.position = position

    def draw(self):
        glPushMatrix()
        glScalef(self.size, self.size, self.size)
        glTranslatef (-0.1, 0.1, 0.14)
        glColor3f (1.0, 1.0, 1.0)
        glutSolidCube(0.16)

        glTranslatef (0.2, 0.0, 0.0)
        glColor3f (0.8, 0.8, 0.8)
        glutSolidCube(0.16)

        glTranslatef (-0.1, -0.1, 0)

        glTranslatef (0.0, -0.09, -0.02)
        glColor3f (0.3, 0.3, 0.3)
        glutSolidCube(0.18)
        glPopMatrix()

        #glLoadIdentity()                # clear the matrix
        glPushMatrix()
        glScalef(self.size, self.size, self.size)
        glTranslatef (0, 0.07, 0)
        glColor3f (1.0, 0.0, 0.0)
        glScalef(1, 0.7, 1)
        glutSolidCube(0.4)              # Dibujo tronco
        glScalef(1, 0.01, 1)
        glPopMatrix()

        glPushMatrix()
        glScalef(self.size, self.size, self.size)
        glTranslatef (0, -.042, 0)
        glColor3f (1.0, 0.0, 0.0)
        glutSolidCube(0.3)
        glPopMatrix()

        glPushMatrix()
        glScalef(self.size, self.size, self.size)
        glTranslatef (-0.1, 0.1, 0)
        glColor3f (1.0, 1.0, 1.0)
        glutSolidCube(0.16)

        glTranslatef (0.2, 0.0, 0.0)
        glColor3f (0.8, 0.8, 0.8)
        glutSolidCube(0.16)
        glPopMatrix()

        glPushMatrix()
        glTranslatef (0.0, 0.3, -3)
        glColor3f (0.8, 0.8, 0.8)
        glScalef(1, 1, TRUCKLENGTH)
        glutSolidCube(2)
        glPopMatrix()



        # cadera
#        cadera(0.0, -0.2, 0.0, self.size)
#        glPushMatrix()
#        glScalef(self.size, self.size, self.size)
#        glTranslatef(0.0, -0.2, 0.0)
#        glRotatef(90, 1.0, 0.0, 0.0)
#        glColor3f (0.8, 0.8, 0.8)
#        glutSolidCone(0.2, 0.23, 12, 12)
#        glPopMatrix()

        # cabeza
#        cabeza(0.0, 0.35, 0.0, self.size)

#        glPushMatrix()
#        glScalef(self.size, self.size, self.size)
#        glTranslatef(0.0, 0.35, 0.0)
#        glColor3f (0.0, 0.0, 1.0)
#        glutSolidCube(0.16)
#
#        glTranslatef(0.0, -0.05, 0.016)
#        glScalef(1, 0.9, 1)
#        glColor3f (1.0, 1.0, 1.0)
#        glutSolidCube(0.13)
#
#        glTranslatef(-0.03, 0.03, 0.042)
#        glColor3f (0, 0, 0.2)
#        glutSolidCube(0.05)
#
#        glTranslatef(0.06, 0.0, 0)
#        glutSolidCube(0.05)
#
#        glPopMatrix()

def cadera(posx, posy, posz, size):
    glPushMatrix()
    glScalef(size, size, size)
    glTranslatef(posx, posy, posz)
    glRotatef(90, 1.0, 0.0, 0.0)
    glColor3f (0.8, 0.8, 0.8)
    glutSolidCube(0.26)
    #glTranslatef(0, -0.3, 0)
    glutSolidCone(0.13, 0.3, 12, 12)
    glPopMatrix()
    glPushMatrix()
    glScalef(size, size, size)
#   glTranslatef (posx, posy, posz)
    glColor3f (0.0, 0.0, 1.0)
    glTranslatef(0.0, -0.3, 0.0)
    glRotatef(90, 1.0, 0.0, 0.0)
    glutSolidCone(0.23, 0.2, 8, 10)
    glPopMatrix()

def cabeza(posx, posy, posz, size):
    # cabeza
    glPushMatrix()
    glScalef(size, size, size)
    glTranslatef(0.0, 0.35, 0.0)
    glColor3f (0.0, 0.0, 1.0)
    glutSolidCube(0.16)

    glTranslatef(0.0, -0.05, 0.016)
    glScalef(1, 0.9, 1)
    glColor3f (1.0, 1.0, 1.0)
    glutSolidCube(0.13)

    glTranslatef(-0.03, 0.03, 0.047)
    glColor3f (0, 0, 1.0)
    glutSolidCube(0.045)

    glTranslatef(0.06, 0.0, 0)
    glutSolidCube(0.045)

    glPopMatrix()

    glPushMatrix()
    glScalef(size, size, size)
    glTranslatef(0.063, 0.42, 0.06)
    
    glRotatef(-90, 1.0, 0.0, 0.0)
    glutSolidCone(0.02, 0.17, 8, 12)
    glTranslatef(-0.126, 0.0, 0.0)
    glutSolidCone(0.02, 0.17, 8, 12)
    #glutSolidCube(0.07)
    #glTranslatef(-0.28, 0.0, 0.0)
    #glutSolidCube(0.07)
    glPopMatrix()

def pierna():
    glPushMatrix()
    #glTranslatef(0.0, -0.3, 0.0)
    glRotatef(90, 1.0, 0.0, 0.0)
    glutWireCone(0.5, 0.5, 8, 10)
    glPopMatrix()

    #glLoadIdentity()                # clear the matrix
    glPushMatrix()
    #glRotatef(ANGLE, 0.0, 0.0, 1.0)
    #glRotatef(HIP, 1.0, 0.0, 0.0)    # Rotacion pierna en eje x
    glTranslatef (0.0, 1, 0.0)    # Me muevo hacia abajo
    glScalef(1.0, 2.0, 1.0)          # Agrando en eje y para que sea rectangulo
    glutSolidCube(0.4)                # Dibujo femur

    glColor3f (1.0, 1.0, 1.0)        # Color blanco
    #glRotatef (KNEE, 1.0, 0.0, 0.0)  # Rotacion rodilla en eje x
    glTranslatef (0.0, -0.4, 0.0)    # Bajo para dibujar pantorrilla
    glColor3f (0.0, 0.0, 1.0)        # color azul
    #glScalef(0.7, 0.8, 0.7)
    glutSolidCube(0.6)                # dibujo pantorrilla
    glPopMatrix()


    glPushMatrix()
    glColor3f (1.0, 1.0, 1.0)        # Color blanco
    #glRotatef(-ANGLE, 0.0, 0.0, 1.0)
    #glRotatef(HIP, 1.0, 0.0, 0.0)    # Rotacion pierna en eje x
    glTranslatef (-0.2, -0.8, 0.0)    # Me muevo hacia abajo
    glScalef(1.0, 2.0, 1.0)          # Agrando en eje y para que sea rectangulo
    glutSolidCube(0.4)                # Dibujo femur

    glColor3f (1.0, 1.0, 1.0)        # Color blanco
    #glRotatef (KNEE, 1.0, 0.0, 0.0)  # Rotacion rodilla en eje x
    glTranslatef (0.0, -0.4, 0.0)    # Bajo para dibujar pantorrilla
    glColor3f (0.0, 0.0, 1.0)        # color azul
    #glScalef(0.7, 0.8, 0.7)
    glutSolidCube(0.6)                # dibujo pantorrilla


    glPopMatrix()
